大语言模型训练的三个阶段

  1. 预训练 (Pre-train):自我学习,累积实力
  2. 指令微调 (Instruction Fine-tuning):名师指点,激发潜力
  3. 强化学习 (Reinforcement Learning from Human Feedback, RLHF):参与实战,打磨技巧

背景知识:文字接龙

我们在[[001.什么是生成式 AI#文字接龙|之前]]了解到语言模型就是就是做文字接龙,将原本无穷无尽可能性答案的目标拆解成答案有限的一连串文字接龙

![[Pasted image 20250727210314.png]]

语言模型是通过[[001.什么是生成式 AI#机器学习 (Machine Learning)|机器学习/深度学习]]的方法学会文字接龙的:

![[Pasted image 20250729211053.png]]

  1. 语言模型是有数十亿个未知参数的函式,这个函式就叫做模型
  2. 为了找出这数十亿个未知参数,给它很多有输入输出的训练资料进行训练
  3. 模型通过机器学习把这数十亿个未知参数找出来的过程叫做训练 (training)学习 (learning)
  4. 参数找出来后,就可以使用这个函式,给它一个新的句子输入让它输出下一个 token 的过程叫做测试 (testing)推论 (inference)

[[#大语言模型训练的三个阶段|上述的三个阶段]]都是通过这个方法在学文字接龙,只是训练资料不同而已

找参数的挑战

训练

![[Pasted image 20250729213501.png]]

  1. 机器学习通过训练资料找出符合这个训练资料的数十亿个未知参数的过程叫做最佳化 (optimization)
  2. 实际上最佳化是如何进行的,在本课程不会详谈
  3. 现在只需要把最佳化想成一个机器,这个机器使用之前需要设定一些超参数 (hyperparameter)
  4. 设定这些超参数就决定了最佳化的方法,最佳化的方法固定下来后将训练资料丢到这个机器里进行一番运作,就找出了这数十亿未知参数
  5. 值得注意的是这个训练的过程不是每次都能成功,训练是有随机性的,有时候可能成功,有时候可能失败
  6. 失败是指:找到的参数没有符合训练资料。训练失败怎么办?换一组超参数再试一次!
  7. 这个训练过程十分消耗算力
  8. 训练模型常说的“调参数”指的是超参数,而不是数十亿未知参数,未知参数是机器自动找出来的

训练成功但测试失败

![[Pasted image 20250729213950.png]]

如何让机器找到比较「合理」的参数

增加训练资料的多样性

上例中就是训练资料不够多样,导致过拟合

如果在训练资料中加入黄色的猫和黑色的狗,最佳化过程中机器就知道靠颜色的参数是不对的,迫使它找新的参数以符合训练资料

设置初始化参数

![[Pasted image 20250729215517.png]]

第一阶段:预训练

需要多少文字才够学会文字接龙

要正确的接出下一个 token,需要两方面的知识:

  1. 语言知识:人类语言的词法、语法
  2. 世界知识:物理、人文、……

![[Pasted image 20250729225055.png]]

![[Pasted image 20250729224834.png]]

世界知识是非常复杂,而且有很多层次的,需要真正非常大量的资料才能让语言模型学会

比如上面的例子,对于小学生来说水的沸点是一百摄氏度是对的;但是对于中学生,知道水的沸点是和大气压相关的,在低压情况下水的沸点是有可能五十摄氏度,而非一百

从任何文字资料学习

![[Pasted image 20250729231659.png]]

网络上的资料可以说是无穷无尽的

![[Pasted image 20250729230115.png]]

这种人工介入很少,就可以训练的方式叫做自督导式学习 (Self-supervised Learning)

资料清洗

![[Pasted image 20250729230927.png]]

所有文字资料都能拿来用吗

《泰晤士报》起诉 OpenAI 和 Microsoft 人工智能使用受版权保护的作品

ChatGPT 之前的 GPT 系列

年份 系列 参数量 训练资料量
2018 GPT-1 117M 7000 本书,大约 1GB
2019 GPT-2 1542M 40GB
2020 GPT-3 175B 580GB

GPT-2 问答上表现如何?

![[Pasted image 20250729233214.png]]

GPT-3 能好多少?

![[Pasted image 20250729233406.png]]

结论就是即使参数量和训练资料量多了几百几千倍,但效果并没有好多少

所以当年很多人觉得 OpenAI 走错方向了,文字接龙怎么可能接出人工智能来

再训练更大的模型也没用

![[Pasted image 20250729234428.png]]

![[Pasted image 20250729234701.png]]

更大的模型也无法好好回答你的问题:你问它一个问题,它会接出更多问题

为什么语言模型不能好好回答问题

因为也没人教它要回答问题……

它的所有知识都是通过网络学的

![[Pasted image 20250729235141.png]]

这个阶段语言模型在网络上学了很多东西,却不知道使用方法